<!DOCTYPE HTML>
<html>
	<head>
		<title>Future Imperfect by HTML5 UP</title>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<style>
	.modal_body{
		margin: 1em;
		height: 80%;
	}
	.modal_left{float: left;margin:0 0 0 1em;
		width: 590px;}
	.modal_right{
		float:left;
		margin:0 2em;
		border:1px solid #A9A9A9 ;
		overflow: auto;
		width: 590px;
				}

</style>

		<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
		<link rel="stylesheet" href="assets/css/blogMain.css" />
		

	</head>
	<body>
			<div id="wrapper">

				<!-- Header -->
					<header id="header">
						<h1><a href="innerIndex.html">Internal Network</a></h1>
						<nav class="links">
							<ul>
								<li><a href="innerIndex.html">内网首页</a></li>
								<li><a href="publicBlog.html">公共博客</a></li>
								<li><a href="resource.html">资源夹</a></li>
								<li><a href="question.html">技术问答</a></li>
								<li><a href="index.html">实验室介绍页</a></li>
							</ul>
						</nav>
					</header>
				<!-- Main -->
					<div id="main">
						<!-- Post -->
							<article class="post">
								<header>
									<div class="title">
										<h2 id="Title"><a >通知标题</a></h2>

									</div>
									<div class="meta">
										<time class="published" datetime="2015-11-01">2017/10/10</time>
										<a href="#" class="author"><span class="name">Pasca</span><img src="assets/img/pasca.jpg" alt="" /></a>
									</div>
								</header>

								<p id="artical">
									这里是通知内容balabalbalabala
								</p>
								<footer>

									<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" >
										<div class="modal-dialog" style="width: 90%;margin: 2%;">
											<div class="modal-content" style="width: 88em;">
												<div class="modal-header" style="height: 3em;">
													<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="height: 1em;width: 1em;">
													×
													</button>
												
												</div>
												<!--标题-->
												<div class="modal_body">
													<div class="modal_left">
													<textarea id="text-input_1" class="modal_left" oninput="this.editor.update()" style="height: 35px;" cols="80"> **关于线程同步的几个知识点**</textarea>
													</div>
												
													<div  class="modal_right" style="height: 35px;">
														<p id="preview_1" ></p>
													</div>
													<div class="clearfix"></div>
												</div>

												<div class="modal_body">
													<div class="modal_left">
													<textarea id="text-input_2" class="modal_left" oninput="this.editor.update()" style="height: 453px;" cols="80">
线程安全是多线程中一个很重要的知识点，渣渣我结合体会写一些，以便加深印象。

⑴问题原因：
当多线程对共享属性进行操作时，一个线程对多条语句只执行了一部分，还没执行完，另一个线程就参与进来进行执行，导致共享属性错误。

解决办法：
对于多操作共享属性的语句，只能让一个线程执行完。在执行过程中，另一个属性不可以参与执行
⑵JAVA对于安全问题提供了专业的解决方法：
就是同步代码块
关键字：synchronized(对象)
｛
需要被同步的代码
PS。即对共享数据进行操作的代码
｝
⑶括号内的对象有什么用？
对象中有锁旗标，即“锁”，或者叫“监视器”。当一个线程进入后持有锁，锁会关闭，
当进程对共享属性的一次操作完成后，锁会解开，另一个线程可以进入。
对象就是充当“锁”的作用。

⑷使用同步代码块的前提：
1.有多个线程
2.共用一个锁

⑸用同步块的利弊
好处：解决了多线程的安全问题
弊端：因为每次对共享属性进行操作，都需要对锁进行判断。消耗的运行资源，会使程序运行变慢

⑹如何找哪些代码该同步
1.明确哪些代码是多线程代码
2.明确共享数据
3.明确多线程运行代码中哪些语句是操作共享数据的

ex:(一个关于两个账户向银行存钱的小例子)

	class Bank
	{
	private double money = 0;
	Object obj = new Object();
	
	public void add(double x)
	{
	    synchronized(obj)
	    {
	    money+=x;
	    System.out.println("now your money is "+money);
	    }
	}
	}
	
	class User implements Runnable
	{
	private Bank f = new Bank();
	public void run()
	{
	    for(int i =0;i<3;i++)
	        f.add(100);
	}
	}
	public class Demo1
	{
	public static void main(String[] args) {
	    User f = new User();
	    Thread t1 = new Thread(f);
	    Thread t2 = new Thread(f);
	    t1.start();
	    t2.start();
	}
	}
⑺同步函数
方式：在函数的修饰符中加synchronized
PS.要加在返还值类型修饰符之前

1.同步函数在一般情况下使用的锁是this
2.同步函数在被静态修饰时，使用的 锁 是该方法所在类的字节码文件的对象。即 类名.class

因为知识点有点杂，所以渣渣只能总结一下。如果有错，还请指正，渣渣我感激不尽。

以上。
										</textarea>
													</div>
												
													<div  class="modal_right" style="height: 453px;">
														<p id="preview_2" ></p>
													</div>
													<div class="clearfix"></div>
												</div>
											
												<div class="modal-footer">
													<button  data-dismiss="modal" >
													提交更改
													</button>
												</div>
											</div>
										</div>
									</div>
									<!--编译界面-->
								</footer>
							</article>
					</div>
<!-- Sidebar -->
					<section id="sidebar">
						<!-- Intro -->
							<section id="intro">
								<header>
									<h2>Public Blog</h2>
									<p> The fire burns high <br/>when everybody adds wood to it </p>
								</header>
							</section>
						<!-- Posts List -->
							<section>
								<ul class="posts">
									<h2>同类博文</h2>
									<li>
										<article>
											<header>
												<h3><a href="blog2.html">单例类懒汉式线程安全问题</a></h3>
												<time class="published" datetime="2015-10-20">2017/10/11</time>
											</header>
											<a href="#" class="image"><img src="assets/img/pasca.jpg" alt="" /></a>
										</article>
									</li>
									<li>
										<article>
											<header>
												<h3><a href="blog3.html">JAVA继承特点的小总结</a></h3>
												<time class="published" datetime="2015-10-15">2017/10/12</time>
											</header>
											<a href="#" class="image"><img src="assets/img/pasca.jpg" alt="" /></a>
										</article>
									</li>
									<li>
										<article>
											<header>
												<h3><a href="blog4.html">页面渲染&&影响渲染速度的两个因素</a></h3>
												<time class="published" datetime="2015-10-08">2017/10/15</time>
											</header>
											<a href="#" class="image"><img src="assets/img/pasca.jpg" alt="" /></a>
										</article>
									</li>
									<li>
										<article>
											<header>
												<h3><a href="blog5.html">if与switch的小区别</a></h3>
												<time class="published" datetime="2015-10-08">2017/10/21</time>
											</header>
											<a href="#" class="image"><img src="assets/img/pasca.jpg" alt="" /></a>
										</article>
									</li>
								</ul>
							</section>
						<!-- Footer -->
							<section id="footer">
								<p class="copyright">&copy;Made by 实验室前端组 </p>
							</section>
					</section>
			</div>
		<!-- Scripts -->
			<script type="text/javascript" src="assets/js/jquery.min.js" ></script>
			<script src="assets/js/main.js"></script>
			<script type="text/javascript" src="assets/js/bootstrap.min.js" ></script>
			<script type="text/javascript" src="assets/js/markdown.js" ></script>
			<script>
				function Editor(input,preview_1,preview_2){  //将input中的内容赋予preview
					this.update=function(){
						preview_1.innerHTML=markdown.toHTML(input.value);
						preview_2.innerHTML=markdown.toHTML(input.value);
					};
					input.editor=this;
					this.update();
				}				
				var retId =function(id){return document.getElementById(id);};//作用为返回ID的对象
			new Editor(retId("text-input_1"),retId("preview_1"),retId("Title"));
			new Editor(retId("text-input_2"),retId("preview_2"),retId("artical"));
			</script>
	</body>
</html>